package com.okcl.controller;

import com.okcl.dto.Result;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController(value = "HelloController")
@RequestMapping("/test")
public class TestController {
    /**
     * 匿名测试
     *
     * @return
     */
    @GetMapping("/test1")
    public Result test() {
        return Result.ok("test1");
    }

    /**
     * 测试权限
     *
     * @return
     */
    @GetMapping("/test2")
    public Result test2() {
        return Result.ok("test2");
    }

    /**
     * 测试admin角色可以访问
     *
     * @return
     */
    @PreAuthorize(value = "hasRole('admin')")
    @GetMapping("/test3")
    public Result test3() {
        return Result.ok("test3");
    }

    /**
     * 测试cto或admin角色可以访问
     * and表示需要同时成立
     *
     * @return
     */
    @PreAuthorize(value = "hasAnyRole('cto','admin') and hasRole('ceo')")
    @GetMapping("/test4")
    public Result test4() {
        return Result.ok("test4");
    }

    /**
     * 测试del权限可以访问
     *
     * @return
     */
    @PreAuthorize(value = "hasAuthority('del')")
    @GetMapping("/test5")
    public Result test5() {
        return Result.ok("test5");
    }

    /**
     * 测试del或者edit权限可以访问
     *
     * @return
     */
    @GetMapping("/test6")
    public Result test6() {
        return Result.ok("test6");
    }
}
